using Godot;
using Smr.基类;
using System;
using System.Collections.Generic;
using System.Linq;

public partial class 组件道具选项垂直容器 : PanelContainer
{
    [Export] private PackedScene 组件道具选项场景;
    [Export] private VBoxContainer 选项垂直容器;

    public override void _Ready()
    {

    }

    public 组件道具选项 创建选项实例()
    {
        var 实例 = 组件道具选项场景.Instantiate<组件道具选项>();
        实例.道具组件.MouseFilter = MouseFilterEnum.Ignore;
        实例.信号被点击 += 道具组件 =>
        {
            置选项选中状态(实例.取UUID());
        };
        选项垂直容器.AddChild(实例);
        return 实例;
    }

    private void 置选项选中状态(string 当前被选中UUID)
    {
        foreach (组件道具选项 选项 in 选项垂直容器.GetChildren().Cast<组件道具选项>())
        {
            选项.被选中 = 选项.取UUID() == 当前被选中UUID;
        }
    }

    public List<组件道具> 取选项组件列表()
    {
        List<组件道具> 道具组 = [];
        foreach (组件道具选项 选项 in 选项垂直容器.GetChildren().Cast<组件道具选项>())
        {
            道具组.Add(选项.道具组件);
        }
        return 道具组;
    }

    public List<组件道具选项> 取选项列表()
    {
        List<组件道具选项> 道具选项 = [];
        foreach (组件道具选项 选项 in 选项垂直容器.GetChildren().Cast<组件道具选项>())
        {
            道具选项.Add(选项);
        }
        return 道具选项;
    }

    public void 删选项(string 道具UUID)
    {
        var 选项组 = 选项垂直容器.GetChildren();
        for (int i = 0; i < 选项组.Count; i++)
        {
            组件道具选项 选项 = (组件道具选项)选项组[i];
            if (选项.道具组件.取道具().UUID == 道具UUID)
            {
                选项.QueueFree();
                return;
            }
        }
    }

    public void 清空选项()
    {
        foreach (var 子项 in 选项垂直容器.GetChildren())
        {
            子项.QueueFree();
        }
    }
}
